/* ******************************************************** */
/* Arcans Project (2010)                                    */
/* Jeu sous forme d'application web entièrement conçu       */
/* et réalisé par Killian Le Maitre                         */
/* Jeu sous licence GNU GPL v3 (voir NOTICE et COPYING)     */
/* ******************************************************** */

//variable globale
var modif_tab = new Array(0,0,0,0);
var passe = true;
//classe statique de gestion du compte
var bl_cp = {
	//méthodes
		//gestion des demandes de modifications
	modif: function (choix) {
		switch (choix) {
			//modification du pseudonyme
			case 1 :
				var td = document.getElementById("users");
				modif_tab[0] = td.firstChild.nodeValue;
				td.removeChild(td.firstChild);
				var crea_input = document.createElement("input");
				crea_input.setAttribute("id", "pseudon");
				crea_input.setAttribute("maxlength", "15");
				crea_input.setAttribute("onclick", "javascript:bl_cp.resetAlerte(1);");
				crea_input.setAttribute("value", modif_tab[0]);
				td.appendChild(crea_input);
				var bouton = document.getElementById("bt_pseudo");
				bouton.removeChild(bouton.firstChild);
				bouton.setAttribute("onclick", "javascript:bl_cp.annul(1);");
				bouton.appendChild(document.createTextNode("Annuler"));
				td = document.getElementById("td_pseudo");
				var crea_button = document.createElement("button");
				crea_button.setAttribute("id", "dp_pseudo");
				crea_button.setAttribute("onclick", "javascript:bl_cp.pseudoVerif();");
				crea_button.appendChild(document.createTextNode("Disponibilité"));
				td.appendChild(crea_button);
				break;
			//modification de l'adresse email
			case 2 :
				var td = document.getElementById("email");
				modif_tab[1] = td.firstChild.nodeValue;
				td.removeChild(td.firstChild);
				var crea_input = document.createElement("input");
				crea_input.setAttribute("id", "mail");
				crea_input.setAttribute("onclick", "javascript:bl_cp.resetAlerte(2);");
				crea_input.setAttribute("value", modif_tab[1]);
				td.appendChild(crea_input);
				var bouton = document.getElementById("bt_email");
				bouton.removeChild(bouton.firstChild);
				bouton.setAttribute("onclick", "javascript:bl_cp.annul(2);");
				bouton.appendChild(document.createTextNode("Annuler"));
				break;
			//modification du mot de passe
			case 3 :
				modif_tab[2] = 1;
				var tr = document.getElementById("tr_pwd");
				tr.removeChild(tr.firstChild);
				var td = document.createElement("td");
				var label = document.createElement("label");
				label.setAttribute("for", "pwdn1");
				label.appendChild(document.createTextNode("Nouveau mot de passe : "));
				td.appendChild(label);
				tr.appendChild(td);
				td = document.createElement("td");
				var input = document.createElement("input");
				input.setAttribute("type", "password");
				input.setAttribute("id", "pwdn1");
				input.setAttribute("maxlength", "15");
				input.setAttribute("onclick", "javascript:bl_cp.resetAlerte(3);");
				td.appendChild(input);
				tr.appendChild(td);
				var table = document.getElementById("tab_param");
				tr = document.createElement("tr");
				tr.setAttribute("id", "tr_pwd2");
				td = document.createElement("td");
				label = document.createElement("label");
				label.setAttribute("for", "pwdn2");
				label.appendChild(document.createTextNode("Confirmation : "));
				td.appendChild(label);
				tr.appendChild(td);
				td = document.createElement("td");
				input = document.createElement("input");
				input.setAttribute("type", "password");
				input.setAttribute("id", "pwdn2");
				input.setAttribute("maxlength", "15");
				input.setAttribute("onclick", "javascript:bl_cp.resetAlerte(3);");
				td.appendChild(input);
				tr.appendChild(td);
				td = document.createElement("td");
				var bouton = document.createElement("button");
				bouton.setAttribute("onclick", "javascript:bl_cp.annul(3);");
				bouton.appendChild(document.createTextNode("Annuler"));
				td.appendChild(bouton);
				tr.appendChild(td);
				table.appendChild(tr);
				break;
		}
		if (modif_tab[3] == 0) {
			var bouton = document.createElement("button");
			bouton.setAttribute("id", "bt_valid");
			bouton.setAttribute("onclick", "javascript:bl_cp.appEncart(1);");
			bouton.appendChild(document.createTextNode("Valider"));
			var div = document.getElementById("div_valid");
			div.appendChild(bouton);
			modif_tab[3] = 1;
		}
	},
		//annulation d'une modification
	annul: function (choix) {
		switch (choix) {
			//cas du pseudonyme
			case 1 :
				bl_cp.resetAlerte(1);
				var td = document.getElementById("users");
				td.removeChild(td.firstChild);
				td.appendChild(document.createTextNode(modif_tab[0]));
				modif_tab[0] = 0;
				var bouton = document.getElementById("bt_pseudo");
				bouton.removeChild(bouton.firstChild);
				bouton.setAttribute("onclick", "javascript:bl_cp.modif(1);");
				bouton.appendChild(document.createTextNode("Modifier"));
				td = document.getElementById("td_pseudo");
				td.removeChild(document.getElementById("dp_pseudo"));
				break;
			//cas de l'adresse électronique
			case 2 :
				bl_cp.resetAlerte(2);
				var td = document.getElementById("email");
				td.removeChild(td.firstChild);
				td.appendChild(document.createTextNode(modif_tab[1]));
				modif_tab[1] = 0;
				var bouton = document.getElementById("bt_email");
				bouton.removeChild(bouton.firstChild);
				bouton.setAttribute("onclick", "javascript:bl_cp.modif(2);");
				bouton.appendChild(document.createTextNode("Modifier"));
				break;
			//cas du mot de passe
			case 3 :
				bl_cp.resetAlerte(3);
				modif_tab[2] = 0;
				document.getElementById("tab_param").removeChild(document.getElementById("tr_pwd2"));
				var tr = document.getElementById("tr_pwd");
				tr.removeChild(tr.firstChild); tr.removeChild(tr.firstChild);
				var td = document.createElement("td");
				td.setAttribute("colspan", "2");
				var bouton = document.createElement("button");
				bouton.setAttribute("onclick", "javascript:bl_cp.modif(3);");
				bouton.appendChild(document.createTextNode("Modifier mon mot de passe"));
				td.appendChild(bouton);
				tr.appendChild(td);
				break;
		}
		if (modif_tab[0] == 0 && modif_tab[1] == 0 && modif_tab[2] == 0) {
			var div = document.getElementById("div_valid");
			div.removeChild(div.firstChild);
			modif_tab[3] = 0;
		}
	},
		//appel de l'encart
	appEncart: function (choix) {
		switch (choix) {
			//appel pour la validation des modifications
			case 1 :
				passe = true;
				bl_cp.resetAlerte(1);
				bl_cp.resetAlerte(2);
				bl_cp.resetAlerte(3);
				if (modif_tab[1] != 0) {
					var emailn = document.getElementById("mail").value;
					if (!(regemail.test(emailn))) {
						document.getElementById("email_div").setAttribute("class", "erreur");
						document.getElementById("email_div").appendChild(document.createTextNode("L'adresse électronique n'est pas valide."));
						passe = false;
					}
				}
				if (modif_tab[2] != 0) {
					var pwdn1 = document.getElementById("pwdn1").value;
					var pwdn2 = document.getElementById("pwdn2").value;
					if (regval.test(pwdn1)) {
						if (pwdn1 != pwdn2) {
							document.getElementById("pwd_div").setAttribute("class", "erreur");
							document.getElementById("pwd_div").appendChild(document.createTextNode("La confirmation du mot de passe ne correspond pas."));
							passe = false;
						}
					}
					else {
						document.getElementById("pwd_div").setAttribute("class", "erreur");
						document.getElementById("pwd_div").appendChild(document.createTextNode("Le nouveau mot de passe doit contenir au moins trois caractères alphanumériques, et commencer par une lettre."));
						passe = false;
					}
				}
				if (modif_tab[0] != 0) {
					var pseudon = document.getElementById("pseudon").value;
					if (regval.test(pseudon)) ajaxFun ("ains", 1, new Array(pseudon), bl_cp.interPseudo);
					else {
						document.getElementById("pseudo_div").setAttribute("class", "erreur");
						document.getElementById("pseudo_div").appendChild(document.createTextNode("Le nouveau pseudonyme doit contenir au moins trois caractères alphanumériques, et commencer par une lettre."));
						passe = false;
					}
				}
				else if (passe) bl_cp.interModif();
				break;
			//appel pour la suppression du compte
			case 2 :
				encart.ouverture("320px", "Suppression du compte : ");
				encart.addHeadPara("Veuillez saisir vos identifiants afin de valider la suppression de votre compte :");
				encart.addLigne("pseudoa", "Pseudonyme : ", "text", "", "");
				encart.addLigne("pwda", "Mot de passe : ", "password", "", "");
				encart.addFootBouton("Valider", "javascript:bl_cp.validSupp();");
				encart.addFootBouton("Annuler", "javascript:encart.fermeture();");
				break;
		}
	},
		//validation du nouveau pseudonyme
	interPseudo: function (res) {
		if (res == 0) { if (passe) bl_cp.interModif(); }
		else if (res == 3) {
			document.getElementById("pseudo_div").setAttribute("class", "erreur");
			document.getElementById("pseudo_div").appendChild(document.createTextNode("Le pseudonyme est erroné."));
		}
		else {
			document.getElementById("pseudo_div").setAttribute("class", "erreur");
			document.getElementById("pseudo_div").appendChild(document.createTextNode("Le pseudonyme est déjà utilisé."));
		}
	},
		//ouverture de l'encart pour les modifications
	interModif: function () {
		encart.ouverture("320px", "Modification du compte : ");
		encart.addHeadPara("Veuillez saisir vos identifiants afin de valider les modifications de votre compte :");
		encart.addLigne("pseudoa", "Pseudonyme : ", "text", "", "");
		encart.addLigne("pwda", "Mot de passe : ", "password", "", "");
		encart.addFootBouton("Valider", "javascript:bl_cp.validModif();");
		encart.addFootBouton("Annuler", "javascript:encart.fermeture();");
	},
		//validation des modifications
	validModif: function () {
		encart.resetAlerte();
		var pseudo = document.getElementById("pseudoa").value;
		var pwd = document.getElementById("pwda").value;
		if (regval.test(pseudo)) {
			if (regval.test(pwd)) {
				var modif_c = new Array("_","_","_");
				if (modif_tab[0] != 0) modif_c[0] = document.getElementById("pseudon").value;
				if (modif_tab[1] != 0) modif_c[1] = document.getElementById("mail").value;
				if (modif_tab[2] != 0) modif_c[2] = document.getElementById("pwdn1").value;
				ajaxFun("amodcp", 5, new Array(pseudo, hashFun(pwd), modif_c[0], modif_c[1], modif_c[2]), bl_cp.reponseModif);
			}
			else encart.alerte("erreur", "Le mot de passe n'est pas valide ! (erreur dans l'écriture du pseudonyme)");
		}
		else encart.alerte("erreur", "Le pseudonyme n'est pas valide ! (erreur dans l'écriture du pseudonyme)");
	},
		//affichage de la validation des modifications
	reponseModif: function (res) {
		switch (res) {
			case 1 : encart.alerte("erreur", "Le nouveau pseudonyme est erroné."); break;
			case 2 : encart.alerte("erreur", "La nouvelle adresse électronique est erronée."); break;
			case 3 : encart.alerte("erreur", "Le nouveau pseudonyme et la nouvelle adresse électronique sont erronés."); break;
			case 4 : encart.alerte("erreur", "Le nouveau mot de passe est erroné."); break;
			case 5 : encart.alerte("erreur", "Le nouveau pseudonyme et le nouveau mot de passe sont erronés."); break;
			case 6 : encart.alerte("erreur", "La nouvelle adresse électronique et le nouveau mot de passe sont erronés."); break;
			case 7 : encart.alerte("erreur", "Les nouvelles informations sont erronées."); break;
			case 8 : encart.alerte("erreur", "Le pseudonyme ou le mot de passe est erroné."); break;
			case 9 : encart.alerte("erreur", "Les identifiants ne sont pas valides !"); break;
			case 10 :
				encart.resetHeader(); encart.resetTable(); encart.resetFooter();
				encart.alerte("valid", "Vos informations ont été modifiées avec succès. Un courrier électronique a été envoyé avec un récapitulatif des modifications.");
				window.setTimeout("encart.fermeture();", 1500);
				if (modif_tab[0] != 0) { modif_tab[0] = document.getElementById("pseudon").value; bl_cp.annul(1); }
				if (modif_tab[1] != 0) { modif_tab[1] = document.getElementById("mail").value; bl_cp.annul(2); }
				if (modif_tab[2] != 0) bl_cp.annul(3);
				break;
		}
	},
		//validation de la suppression
	validSupp: function () {
		encart.resetAlerte();
		var pseudo = document.getElementById("pseudoa").value;
		var pwd = document.getElementById("pwda").value;
		if (regval.test(pseudo)) {
			if (regval.test(pwd)) ajaxFun ("asupp", 2, new Array(pseudo, hashFun(pwd)), bl_cp.verifSupp);
			else encart.alerte("erreur", "Le mot de passe n'est pas valide ! (erreur dans l'écriture du pseudonyme)");
		}
		else encart.alerte("erreur", "Le pseudonyme n'est pas valide ! (erreur dans l'écriture du pseudonyme)");
	},
		//affichage validation suppression
	verifSupp: function (res) {
		if (res == 1) {
			encart.resetHeader(); encart.resetAlerte(); encart.resetTable(); encart.resetFooter();
			encart.alerte("valid", "Suppression du compte réussie, vous allez recevoir un courrier électronique de confirmation. Vous allez être automatiquement déconnecté.");
			encart.alerte("valid", "Si vous ne validez ou n\'annulez pas la suppression, le compte sera quand même supprimé définitivement dans une semaine.");
			window.setTimeout("encart.fermeture();", 1500);
			window.setTimeout('location.replace("?p=i");', 1800);
		}
		else if (res == 3) encart.alerte("erreur", "Le pseudonyme ou le mot de passe est erroné.");
		else encart.alerte("erreur", "Les identifiants ne sont pas valides !");
	},
		//vérification de la disponibilité du pseudonyme
	pseudoVerif: function () {
		var pseudo = document.getElementById("pseudon").value;
		if (regval.test(pseudo)) ajaxFun ("ains", 1, new Array(pseudo), bl_cp.pseudoValid);
		else bl_cp.pseudoValid(3);
	},
		//affichage de la disponibilité du pseudonyme
	pseudoValid: function (res) {
		bl_cp.resetAlerte(1);
		var pseudo_div = document.getElementById("pseudo_div");
		if (res == 0) {
			pseudo_div.setAttribute("class", "valid");
			pseudo_div.appendChild(document.createTextNode("Vérification terminée, le pseudonyme est dipsonible."));
		}
		else if (res == 3) {
			pseudo_div.setAttribute("class", "erreur");
			pseudo_div.appendChild(document.createTextNode("Le nouveau pseudonyme doit contenir au moins trois caractères alphanumériques, et doit commencer par une lettre."));
		}
		else {
			pseudo_div.setAttribute("class", "erreur");
			pseudo_div.appendChild(document.createTextNode("Le pseudonyme est déjà utilisé."));
		}
	},
		//efface la zone d'alerte
	resetAlerte: function (choix) {
		var alerteR;
		switch (choix) {
			case 1 : alerteR = document.getElementById("pseudo_div"); break; 
			case 2 : alerteR = document.getElementById("email_div"); break;
			case 3 : alerteR = document.getElementById("pwd_div"); break;
		}
		if (alerteR.hasChildNodes()) alerteR.removeChild(alerteR.firstChild);
	}
}